package alg

import "fmt"

func SelectSortRun() {
	//定义一个数组
	arr := []int{3, 1, 12, 7, 17, 30, 15, 50, 55, 76, 75}
	SelectSort(arr)
	fmt.Println("main arr=", arr, "len=", len(arr))
}

// 简单选择排序, 每次待排序的数据元素中选择最小(或最大)的一个元素作为首元素, 直到所有元素排完,
// 属于不稳定排序, 时间复杂度O(n2), 比冒泡效率好一些
func SelectSort(arr []int) {
	arrLen := len(arr)
	// 进行两两比较
	for i := 0; i < arrLen - 1 ; i++ {
		fmt.Println("每次 i循环 i = ,", i)
		min := i
		for j := i + 1; j < arrLen; j++ {
			fmt.Println("每次 j循环 j = ,", j, "min: ", arr[min], ", last: ", arr[j])
			if arr[j] < arr[min] {
				min = j
			}
		}
		// 判断当次的 min 是否变动
		if min != i {
			arr[i], arr[min] = arr[min], arr[i]
		}
	}
}